package com.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.demo.domain.SysDict;

import java.util.List;
import java.util.Map;

/**
 * @author gxd
 * @since 2025/5/28
 */
public interface SysDictService extends IService<SysDict> {

    /**
     * 分页列表-字典列表
     * @param dict 字典查询条件
     * @return 字典集合
     */
    List<SysDict> pageList(SysDict dict);

    /**
     * 不分页列表-字典列表
     * @param dict 字典查询条件
     * @return 字典集合
     */
    List<SysDict> selectDictList(SysDict dict);

    /**
     * 详情信息-根据Id获取字典详情信息
     * @param id 字典Id
     * @return 字典
     */
    SysDict getDictById(Long id);

    /**
     * 添加或修改-字典信息
     * @param dict 字典实体
     * @return 字典
     */
    SysDict addOrEdit(SysDict dict);

    /**
     * 删除-字典信息（支持批量）
     * @param ids 字典Id（多个需逗号分隔）
     * @return 结果
     */
    boolean batchRemoveById(String ids);

    /**
     * 修改状态-启用或禁用
     * @param id 字典Id
     * @param status 状态
     * @return 结果
     */
    boolean editStatus(Long id, Integer status);

    /**
     * 树查询-字典树
     * @return 字典树
     */
    List<SysDict> getDictTree();

    /**
     * 加载字典数据到Redis缓存
     */
    void loadingDictCache();

    /**
     * 根据code和label获取value
     */
    String selectNameByCodeAndLabel(String code, String label);

    /**
     * 根据code获取字典Map
     */
    Map<String, String> getDictMapByCode(String code);
}
